﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Text.RegularExpressions;

namespace LI4
{
    public partial class perfil : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["username"] == null)
            {
                Response.Redirect("main.aspx");
            }
            LI4.Business.Login currUser = Program.Login;
            
            

            Data.Localidade localidade = new Data.Localidade();
            Data.Distrito distrito = new Data.Distrito();

            Program.localidades = localidade.getLocalidades();
            Program.distritos = distrito.getDistritos();

            if (nome.Text == "")
            {

                foreach (Business.Distrito dist in Program.distritos)
                    lstdistrito.Items.Add(dist.Nome);


                int codDistr = 0;
                string distr = lstdistrito.Text;
                foreach (Business.Distrito dist in Program.distritos)
                    if (dist.Nome.Equals(distr)) codDistr = dist.CodDistrito;

                foreach (Business.Localidade local in Program.localidades)
                {
                    if (local.Distrito.CodDistrito == codDistr) lstlocalidade.Items.Add(local.Nome);
                }
                if (lstlocalidade.Items.Count > 0) lstlocalidade.SelectedIndex = 0;

                //load das infos pessoais

                

                    lstlocalidade.Items.Clear();
                    Business.Candidato currCand = new LI4.Business.Candidato(new LI4.Data.Candidato().getCandidato(Session["username"].ToString()));

                    nome.Text = currCand.Nome;
                    email.Text = currCand.Mail;
                    telefone.Text = currCand.Telefone.ToString();
                    morada.Text = currCand.Rua;
                    codpostal.Text = currCand.CodPostal.Substring(0,4);
                    codpostal1.Text = currCand.CodPostal.Substring(4, 3);
                    lstdistrito.SelectedValue = currCand.Localidade.Distrito.ToString();

                    foreach (Business.Distrito dist in Program.distritos)
                        if (dist.Nome.Equals(distr)) codDistr = dist.CodDistrito;

                    foreach (Business.Localidade local in Program.localidades)
                    {
                        if (local.Distrito.CodDistrito == currCand.Localidade.Distrito.CodDistrito) lstlocalidade.Items.Add(local.Nome);
                    }

                    lstlocalidade.SelectedValue = currCand.Localidade.Nome;

                
               

            }

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Business.Candidato currCand = new LI4.Business.Candidato(new LI4.Data.Candidato().getCandidato(Session["username"].ToString()));
            string username = tbUser.Text;
            string pass = tbPass.Text;
            string pass1 = tbPass1.Text;

            if (username != Program.Login.Password) Response.Write("<script>alert('Password Actual Errada')</script>");
            else if (pass != pass1) Response.Write("<script>alert('Falhou Confirmação da nova Password')</script>");
            else if (pass.Length < 1) Response.Write("<script>alert('Campo Password inválido')</script>");
            else
            {
                Business.Login novoUser = new LI4.Business.Login(Program.Login.Username,pass,3,20);
                Data.Login novoLogin = new LI4.Data.Login();
                Program.Login = novoUser;
                
                novoLogin.update(Program.Login);
                Response.Write("<script>alert('Dados de Login alterados com sucesso')</script>");
                Response.Redirect("perfil.aspx");
            }

        }

        protected void lstdistrito_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void lstlocalidade_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            string nome_ = nome.Text;
            string email_ = email.Text;
            string morada_ = morada.Text;
            string codpostal2 = codpostal.Text;
            string codpostal3 = codpostal1.Text;
            string codpostal_ = codpostal2 + codpostal3;
            //int codLocalidade_ = getCodLocalidade(lstlocalidade.SelectedItem.Text.ToString());
            string nomelocalidade = lstlocalidade.SelectedItem.Text;
            string curr_ = "";
            int telefone_ = 1;
            int telefonep = 1;
            int cod = 1;

            try
            {
                int telefonez = Int32.Parse(telefone.Text);
            }
            catch
            {
                telefonep = 0;
            }

            try
            {
                int codP = Int32.Parse(codpostal_);
            }
            catch
            {
                cod = 0;
            }

            Regex nomereg = new Regex(@"[a-zA-Z0-9àáéóúãâÂÁÀÉêÊÍÓçÇÃÓõÕôÚ.,:-_]+([ a-zA-Z0-9àáéêÊóúãâÂÁÀÉÍÓçÇÃÓÚõÕô.,:-_]+)*");
            Regex mailReg = new Regex(@"[a-zA-Z0-9]+@[a-zA-Z]+\.[a-zA-Z]+");
            if (!nomereg.IsMatch(nome_)) Response.Write("<script>alert('Campo Nome inválido')</script>");
            else if (!mailReg.IsMatch(email_)) Response.Write("<script>alert('Campo email inválido')</script>");
            else if (!nomereg.IsMatch(morada_)) Response.Write("<script>alert('Campo Rua inválido')</script>");
            else if (cod == 0) Response.Write("<script>alert('Campo Código-Postal inválido')</script>");
            else if (telefonep == 0) Response.Write("<script>alert('Campo Telefone inválido')</script>");

            else
            {
                Business.Candidato currCand = new LI4.Business.Candidato(new Data.Candidato().getCandidato(Session["username"].ToString()));
                Business.Localidade local = new LI4.Business.Localidade(new Data.Localidade().getLocalidadeNome(nomelocalidade));
                if (FileUpload1.HasFile)
                {
                    char[] splitter  = {'.'};
                    currCand.Curriculum = Session["username"].ToString() + "." + FileUpload1.FileName.Split(splitter)[1];
                    FileUpload1.SaveAs(@"C:\LI4-Emprego\curriculums\" + currCand.Curriculum);
                }

                Business.Candidato novoCand = new LI4.Business.Candidato(nome_, morada_, codpostal_, email_, currCand.Curriculum, currCand.Situacao, telefone_, local, Program.Login);


                Data.Candidato novoCand2 = new LI4.Data.Candidato();

                novoCand2.update(novoCand);
                Response.Write("<script>alert('Dados Pessoais actualizados')</script>");
                System.Threading.Thread.Sleep(4000);

                Response.Redirect("perfil.aspx");

            }
        }

        protected void lstdistrito_SelectedIndexChanged1(object sender, EventArgs e)
        {
            LI4.Business.Login currUser = Program.Login;



            Data.Localidade localidade = new Data.Localidade();
            Data.Distrito distrito = new Data.Distrito();

            Program.localidades = localidade.getLocalidades();
            Program.distritos = distrito.getDistritos();

            lstlocalidade.Items.Clear();

            Program.localidades = localidade.getLocalidades();
            Program.distritos = distrito.getDistritos();

            int codDistr = 0;
            string distr = lstdistrito.Text;
            foreach (Business.Distrito dist in Program.distritos)
                if (dist.Nome.Equals(distr)) codDistr = dist.CodDistrito;

            foreach (Business.Localidade local in Program.localidades)
            {
                if (local.Distrito.CodDistrito == codDistr) lstlocalidade.Items.Add(local.Nome);
            }
            if (lstlocalidade.Items.Count > 0) lstlocalidade.SelectedIndex = 0;
        }
    }


}
